home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Tool Chest / Networking / SNMP / SNMP Development / MacSNMP Transport 1.0.2 / SNMPTransport.h < prev   
Encoding:
C/C++ Source or Header  |  1993-06-15  |  3.6 KB  |  129 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SNMPTransport.h
  3.  
  4.     Contains:    Declaration for SNMP Transport
  5.  
  6.     Copyright:    © 1991-1992 by Apple Computer, Inc., all rights reserved.
  7.  
  8. */
  9.  
  10. #ifndef __SNMPTRANSPORT__
  11. #define    __SNMPTRANSPORT__
  12.  
  13.  
  14. /**********************************************************************
  15. **    Includes
  16. **********************************************************************/
  17.  
  18. #ifndef __LIBRARYMANAGER__
  19. #include <LibraryManager.h>
  20. #endif
  21.  
  22. #ifndef __TSNMP__
  23. #include <TSNMP.h>
  24. #endif
  25.  
  26. #define default_NumofReads            8
  27. #define default_ReadTIAddrSRCmax    4
  28. #define default_ReadTIAddrDESTmax    4
  29.  
  30.  
  31. struct SNMPPacketStruct {
  32.     PacketPiece    piece[kDynamicArray];
  33. };
  34.     
  35. typedef struct SNMPPacketStruct    SNMPPacketStruct;
  36. typedef SNMPPacketStruct*        SNMPPacketStructPtr;
  37. typedef SNMPPacketStruct**        SNMPPacketStructHdl;
  38.  
  39.  
  40. struct PacketElement {
  41.     Ptr            qLink;
  42.     short        count;
  43. };
  44. typedef struct PacketElement    PacketElement;
  45. typedef struct PacketElement*    PacketElementPtr;
  46.  
  47.  
  48. /**********************************************************************
  49. **    typedef for the write & read Procs
  50. **********************************************************************/
  51. class TSNMPTransport;
  52.  
  53. struct SNMPTransportBlock {
  54.     unsigned long        qLink;                // reserved for pointer to next block
  55.     short                qType;                // reserved for queue routines
  56.     TSNMPTransport*     transport;            // who was asked to read or write this block
  57.     SNMPError            result;                // after request is serviced
  58.     void*                 destopaqueData;        // destination address to be resolved (used in write only)
  59.     TIAddressPtr        destination;        // who the packet was sent to 
  60.     TIAddressPtr        source;                // who sent the packet to us
  61.     void *                UserDataPtr;        // Transport work space
  62.     Boolean                freeFlag;            // managed by SNMP Manager
  63.     Boolean                readFlag;            // managed by SNMP Manager
  64.     PacketElementPtr    pktelementPtr;        // managed by SNMP Manager
  65.     SNMPPacketStructPtr    packetPtr;            // managed by SNMP Manager
  66. };
  67. typedef struct SNMPTransportBlock    SNMPTransportBlock;
  68. typedef SNMPTransportBlock*            SNMPTransportBlockPtr;
  69.  
  70. /**********************************************************************
  71. **    callback routine --> Write & WriteCleanup & Read Address Proc 
  72. **********************************************************************/
  73. typedef void                         
  74. (*TransportRWProcPtr)(SNMPTransportBlockPtr dataPtr);    
  75.  
  76. /**********************************************************************
  77. ** Class TSNMPTransport 
  78. ***********************************************************************/
  79. #define kTSNMPTransportID     "snmp:mgr$TSNMPTrans"
  80. #define kLIB_TransID          "snmp:trans$"        // Library Id for an SNMP Transport 
  81.  
  82. class TSNMPTransport : public TDynamic 
  83. {
  84. public:
  85.     
  86.                     TSNMPTransport();
  87.     virtual            ~TSNMPTransport();
  88.     virtual Boolean    IsValid() const;        // returns valid or not valid state of        
  89.     
  90.     virtual OSErr     InitSNMPTransport(    
  91.         TransportTag        aTag,
  92.         TIAddressPtr        aTrapSocketPtr,
  93.         TIAddressPtr        aReqSocketPtr,
  94.         Boolean                ahandlesresolution,
  95.         short                aWritebufsize,
  96.         TransportRWProcPtr    aWriteProcPtr,
  97.         short                aNumofReads,
  98.         short                aReadTIAddrSRCmax,
  99.         short                aReadTIAddrDESTmax,
  100.         short                aReadbufsize,
  101.         TransportRWProcPtr    aReadProcPtr);
  102.         
  103.     virtual    void    SNMPWriteDone(SNMPTransportBlockPtr snmpPtr);
  104.     virtual    void    SNMPReadDone(SNMPTransportBlockPtr snmpPtr);
  105.     
  106.     TSNMPManagerPrv*    fSNMPManagerPtr;
  107.                 
  108. friend TSNMPManagerPrv;
  109.  
  110.  
  111. protected:
  112.         Boolean                fValid;
  113.         Boolean                fhandlesresolution;
  114.         short                fNumofReads;
  115.         short                fReadTIAddrSRCmax;
  116.         short                fReadTIAddrDESTmax;
  117.         short                fReadbufsize;
  118.         short                fWritebufsize;
  119.  
  120. private:
  121.         
  122.         TransportTag        fTag;
  123.         TIAddressPtr        fTrapSocketPtr;
  124.         TIAddressPtr        fReqSocketPtr;
  125.         TransportRWProcPtr    fWriteProcPtr;
  126.         TransportRWProcPtr    fReadProcPtr;
  127. };
  128.  
  129. #endif